package com.bfxy.disruptor.common;

public interface Sequenced {
	// size of the RingBuffer.//获取队列的大小
	int getBufferSize();

	// 判断队列中是否还有可用的容量
	boolean hasAvailableCapacity(final int requiredCapacity);

	// 获取队列中剩余的有效容量
	long remainingCapacity();

	// 申请下一个sequence，用于事件发布者发布数据，申请失败则自旋
	long next();

	// 申请n个sequence，用于事件发布者发布数据，申请失败则自旋
	long next(int n);

	// 尝试获取一个sequence
	long tryNext() throws InsufficientCapacityException;

	// 尝试获取n个sequence
	long tryNext(int n) throws InsufficientCapacityException;

	// 生产者在ringbuffer的这个序号上投递数据，
	void publish(long sequence);

	// 批量发布sequence
	void publish(long lo, long hi);
}